#include "head.h"
// 管理员主函数
void Administrator_login()
{
    // 管理员链表创建
    r_list *head = create_head();
    read_r_data(head);
    // 航班链表创建与写入
    f_list *f_list_head = (f_list *)malloc(sizeof(f_list));
    f_list_head->next = NULL;
    flight_data_file_scanf(f_list_head);
    // 用户链表创建与写入
    u_list *u_list_head = init_u_list();
    u_list_head = Log_In(u_list_head);
    if (root_log(head))
    {
        while (1)
        {
            printf("\033[1;31;40m请选择你需要的操作\033[0m\n");
            printf("\033[1;33;40m选项一  增 加 航 班\n");
            printf("选项二  修 改 航 班\n");
            printf("选项三  增加管理员 \n");
            printf("选项四  升 级 用 户\n");
            printf("选项五  退       出\033[0m\n");
            int num;
            scanf("%d", &num);
            switch (num)
            {
            case 1:
                add_f_node(f_list_head); // 增加航班
                break;
            case 2:
                amend_f_node(f_list_head); // 修改航班
                break;
            case 3:
                add_rootuser(head); // 增加管理员
                break;
            case 4:
                Upgrade_user(u_list_head); // 升级用户
                break;
            case 5:
                exit(-1); // 退出
                break;
            }
        }
    }
}

// 增加航班
void add_f_node(f_list *list)
{
    system("clear");
    f_data data;
    printf("\033[1;31;40m请输入航班编号\033[0m");
    scanf("%d", &data.id);
    printf("\033[1;31;40m请输入飞机机型\033[0m");
    scanf("%s", data.flighttype);
    printf("\033[1;31;40m请输入航班起点站\033[0m");
    scanf("%s", data.startcity);
    printf("\033[1;31;40m请输入航班终点站\033[0m");
    scanf("%s", data.arrivecity);
    printf("\033[1;31;40m请输入起飞时间\033[0m");
    scanf("%d %d", &data.starttime[0], &data.starttime[1]);
    printf("\033[1;31;40m请输入到达时间\033[0m");
    scanf("%d %d", &data.arrivetime[0], &data.arrivetime[1]);
    printf("\033[1;31;40m请输入飞行时间\033[0m");
    scanf("%s", data.flytime);
    printf("\033[1;31;40m请输入票价\033[0m");
    scanf("%d", &data.value);
    printf("\033[1;31;40m请输入载客量\033[0m");
    scanf("%d", &data.maxNUM);
    printf("\033[1;31;40m请输入剩余座位\033[0m");
    scanf("%d", &data.leftbuyersa);
    data.whetherfly = 'n';
    insert_double_node(list, data, 3);
    flight_data_file_print(list);
}
// 修改航班
void amend_f_node(f_list *list)
{
    int num;
    int id;
    print_forward_double_link_list(list);
    printf("\033[1;31;40m请输入要修改的航班编号\033[0m\n");
    scanf("%d", &id);
    f_node *L1 = list->next;
    do
    {
        if (L1->data.id == id)
        {
            while (1)
            {
                fflush(stdin);
                system("clear");
                printf("\033[1;31;40m请输入要修改的选项\033[0m\n");
                printf("\033[1;34;40m 选项一 起飞时间\n");
                printf(" 选项二 到达时间\n");
                printf(" 选项三 飞行时间\n");
                printf(" 选项四 是否起飞\n");
                printf(" 选项五 退    出\033[0m\n");
                scanf("%d", &num);
                switch (num)
                {
                case 1:
                    printf("\033[1;31;40m请输入正确的起飞时间\033[0m");
                    scanf("%d %d", &L1->data.starttime[0], &L1->data.starttime[1]);
                    break;
                case 2:
                    printf("\033[1;31;40m请输入正确的到达时间\033[0m");
                    scanf("%d %d", &L1->data.arrivetime[0], &L1->data.arrivetime[1]);
                    break;
                case 3:
                    printf("\033[1;31;40m请输入正确的到达时间\033[0m");
                    scanf("%s", L1->data.flytime);
                    break;
                case 4:

                    printf("\033[1;31;40m是否起飞:\033[0m");
                    getchar();
                    scanf("%c", &L1->data.whetherfly);
                    break;
                case 5:
                    flight_data_file_print(list);
                    return;
                }
                printf("\033[1;34;40m修改成功\033[0m");
                fflush(stdout);
                sleep(5);
            }
        }
        L1 = L1->next;
    } while (L1->next != list->next);
}
// 升级用户
void Upgrade_user(u_list *list)
{
    u_node *L1 = list->next;
    char name[128];
    int ID;
    printf("\033[1;31;40m请输入要修改的用户名\033[0m");
    scanf("%s", name);
    while (L1 != NULL)
    {
        if (!strcmp(name, L1->userm.name))
        {
            printf("\033[1;31;40m用户等级为:\033[1;32;40m%d\033[0m\n", L1->userm.IDcard);
            printf("\033[1;31;40m请输入要新等级\033[0m\n");
            scanf("%d", &ID);
            if(ID!=L1->userm.IDcard)
            switch (ID)
            {
            case 0:
                L1->userm.card = 0;
                break;
            case 1:
                L1->userm.card = 10000;
                break;
            case 2:
                L1->userm.card = 15000;
                break;
            case 3:
                L1->userm.card = 20000;
                break;
            }
            L1->userm.IDcard = ID;
            printf("\033[1;34;40m修改成功\033[0m\n");
            insert_file_u_node(list);
            sleep(3);
            system("clear");
            return;
        }
        L1 = L1->next;
    }
}

// printf("\033[1;31;40m请输入 033[0m");
